/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */


/**
 *
 * @author Christopher
 */
import java.util.ArrayList;
import java.util.List;

public class Lista extends ArrayList implements List{
    public boolean Operation;
    /**
     * Constructor de Lista heredando constructor de ArrayList
     */
    public Lista(){
        super();
    }
    /**
     * Constructor con parametro de lista
     * @param lista lista para copiar
     */
    public Lista(List lista){
        super();
        
        if(lista == null){
            lista = new Lista();
        }
        for(int i = 0; i<lista.size();i++){
            this.add(lista.get(i));
        }
    }
    
    public Lista(Atoms atomo){
        super();
        
        this.add(atomo);
    }
    
    public boolean isEmpty(){
        if(this.size() == 0){
            return true;
        }
        return false;
    }
    
    public void agregar(Atoms atomo){
        this.add(atomo);
    }
    
    public void agregar(int i, Atoms atomo){
        this.add(i, atomo);
        
    }
    
    public Atoms getOperation(){
        Atoms elemento;
        if(!this.Operation){
            System.out.println("No es ninguna operacion :S ");
        }
        elemento = (Atoms)this.get(0);
        return elemento;
    }
    
    public Atoms getAtomo(int i){
        Atoms elemento;
        elemento = (Atoms) this.get(i);
        return elemento;
    }
    
    public Atoms removeAtomo(int i){
        Atoms elemento;
        elemento = (Atoms) this.remove(i);
        return elemento;
    }
    
    public boolean listaEquals(Object objetoLista){
        Lista una_lista = (Lista)objetoLista;
        
        if(this.size()!= una_lista.size())
            return false;
        
        for(int i = 0; i<this.size(); i++){
            if(!this.get(i).equals(una_lista.get(i))){
                return false;
            }
        
        }
        return true;
    }
    
    public Atoms replace(int i, Atoms new_atom){
        Atoms atomo = this.removeAtomo(i);
        this.agregar(i,atomo);
        
        return atomo;
    }
    
}